package com.blog.dao;

import com.blog.entity.mid.PostLike;
import com.blog.entity.mid.PostStar;
import com.blog.entity.mid.UserLike;

/**
 * @author 蒲鑫
 * @function 功能：中间表有关的操作
 * @date 2023年6月1日
 */
public interface MidTableDao {
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过帖子id查询帖子的收藏数量
	 * @parameter 传入参数：帖子postId
	 * @return 返回值：此id的帖子收藏数量
	 * @date 2023年6月1日
	 */
	public int selectPostStarNumByPostId(int postId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：添加postStar数据
	 * @parameter 传入参数：postStar
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int insertPostStar(PostStar postStar);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过收藏号删除postStar数据
	 * @parameter 传入参数：postStarId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostStarByPostStarId(int postStarId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过postId删除有关该帖子所有postStar数据
	 * @parameter 传入参数：postId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostStarByPostId(int postId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过userId删除有关该用户所有postStar数据
	 * @parameter 传入参数：userId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostStarByUserId(int userId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过帖子id查询帖子的点赞数量
	 * @parameter 传入参数：帖子postId
	 * @return 返回值：此id的帖子点赞数量
	 * @date 2023年6月1日
	 */
	public int selectPostlikeNumByPostId(int postId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：添加postLike数据
	 * @parameter 传入参数：postLike
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int insertPostLike(PostLike postLike);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过点赞号删除postLike数据
	 * @parameter 传入参数：postLikeId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostLikeByPostLikeId(int postLikeId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过postId删除有关该帖子所有postLike数据
	 * @parameter 传入参数：postId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostLikeByPostId(int postId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过userId删除有关该用户所有postLike数据
	 * @parameter 传入参数：userId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deletePostLikeByUserId(int userId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过用户id查询用户关注的数量
	 * @parameter 传入参数：用户userId
	 * @return 返回值：此id的用户关注了num个用户
	 * @date 2023年6月1日
	 */
	public int selectUserlikeNumByUserId(int userId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过用户id查询用户的粉丝数量
	 * @parameter 传入参数：用户userId
	 * @return 返回值：此id的用户有num个粉丝
	 * @date 2023年6月1日
	 */
	public int selectFansNumByUserId(int userId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：添加userLike数据
	 * @parameter 传入参数：userLike
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int insertUserLike(UserLike userLike);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过用户喜欢表的id删除userLike数据
	 * @parameter 传入参数：userLikeId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deleteUserLikeByUserLikeId(int userLikeId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过userId删除有关该用户所有userLike数据
	 * @parameter 传入参数：userId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deleteUserLikeByUserId(int userId);
	
	/**
	 * @author 蒲鑫
	 * @function 功能：通过likeId删除有关该用户所有userLike数据
	 * @parameter 传入参数：likeId
	 * @return 返回值：返回影响行数，1为成功
	 * @date 2023年6月1日
	 */
	public int deleteUserLikeByLikeId(int likeId);
	
}
